package model

import (
	"gorm.io/gorm"
	"smart-health-platforms/config"
	"time"
)

type TrustedDevices struct {
	Id         uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId     uint           `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;default:0;" json:"user_id"`                          // 用户id
	DeviceHash string         `gorm:"column:device_hash;type:varchar(255);comment:设备唯一标识;not null;" json:"device_hash"`                             // 设备唯一标识
	DeviceName string         `gorm:"column:device_name;type:varchar(255);comment:设备名称;not null;" json:"device_name"`                               // 设备名称
	DeviceType uint           `gorm:"column:device_type;type:int UNSIGNED;comment:设备类型：1：手机 2：pc 3：平板;not null;default:0;" json:"device_type"`      // 设备类型：1：手机 2：pc 3：平板
	System     uint           `gorm:"column:system;type:int UNSIGNED;comment:系统：1：iOS 2：Android 3：windows 4：Mac;not null;default:0;" json:"system"` // 系统：1：iOS 2：Android 3：windows 4：Mac
	LastIp     string         `gorm:"column:last_ip;type:varchar(255);comment:最后登录IP;not null;" json:"last_ip"`                                     // 最后登录IP
	LastTime   time.Time      `gorm:"column:last_time;type:datetime(3);comment:最后登录时间;not null;" json:"last_time"`                                  // 最后登录时间
	Status     uint           `gorm:"column:status;type:int UNSIGNED;comment:状态：1：有效 2：已删除;not null;default:0;" json:"status"`                      // 状态：1：有效 2：已删除
	CreatedAt  time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt  time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt  gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (td *TrustedDevices) TableName() string {
	return "trusted_devices"
}
func (td *TrustedDevices) GetTrustedDevicesById(id int) error {
	return config.DB.Where("id = ?", id).Limit(1).Find(&td).Error
}

// 信任设备添加
func (td *TrustedDevices) CreateTrustedDevices() error {
	return config.DB.Create(&td).Error
}

// 信任设备修改
func (td *TrustedDevices) UpdateTrustedDevices(id int) error {
	return config.DB.Where("id = ?", id).Updates(&td).Error
}

// 信任设备删除
func (td *TrustedDevices) DeleteTrustedDevices(id int) error {
	return config.DB.Where("id = ?", id).Delete(&td).Error
}

// 信任设备列表查询
func (td *TrustedDevices) GetTrustedDevicesList() (trustedDevices []*TrustedDevices, err error) {
	err = config.DB.Find(&trustedDevices).Error
	return
}
